package com.exam.util;

/*
 * 分页信息辅助类
 */
public class PageUtil {
	/**
	 * 创建分页信息对象
	 * 
	 * @param everyPageSize
	 *            每页的可显示的记录数
	 * @param totalCount
	 *            总的记录数
	 * @param currentPage
	 *            当前页码
	 * @return
	 */
	public static Page createPage(int everyPageSize, int totalCount,
			int currentPage) {
		Page page = null;// 用于存储分页信息
		everyPageSize = getEveryPageSize(everyPageSize);// 取得每页可显示的记录数
		currentPage = getCurrentPage(currentPage); // 取得当前页码
		int totalPage = getTotalPage(everyPageSize, totalCount);// 取得总的页数
		int beginIndex = getBeginIndex(everyPageSize, currentPage);// 取得起始位置
		boolean hasPrePage = getHasPrePage(currentPage);// 是否有上一页
		boolean hasNextPage = getHasNextPage(totalPage, currentPage);// 是否有下一页
		page = new Page(everyPageSize, totalCount, totalPage, currentPage,
				beginIndex, hasPrePage, hasNextPage);// 根据上面的信息取得分页信息对象
		return page;
	}

	/**
	 * 获得每页显示记录数
	 * 
	 * @param everyPage
	 * @return
	 */
	public static int getEveryPageSize(int everyPage) {
		return everyPage == 0 ? 10 : everyPage;
	}

	/**
	 * 获得当前页
	 * 
	 * @param currentPage
	 * @return
	 */
	public static int getCurrentPage(int currentPage) {
		return currentPage == 0 ? 1 : currentPage;
	}

	/**
	 * 获得总页数
	 * 
	 * @param everyPage
	 * @param totalCount
	 * @return
	 */
	public static int getTotalPage(int everyPage, int totalCount) {
		return (totalCount - 1) / everyPage + 1;
	}

	/**
	 * 获得起始位置
	 * 
	 * @param everyPage
	 * @param currentPage
	 * @return
	 */
	public static int getBeginIndex(int everyPage, int currentPage) {
		return (currentPage - 1) * everyPage;
	}

	/**
	 * 获得是否有上一页
	 * 
	 * @param currentPage
	 * @return
	 */
	public static boolean getHasPrePage(int currentPage) {
		return currentPage == 1 ? false : true;
	}

	/**
	 * 获得是否有上一页
	 * 
	 * @param totalPage
	 * @param currentPage
	 * @return
	 */
	public static boolean getHasNextPage(int totalPage, int currentPage) {
		return currentPage == totalPage || totalPage == 0 ? false : true;
	}
}
